namespace CLELCore.Executable
{
	public class CLELExecutable
	{
		protected DOSHeader _dosheader;
		//IMAGE_DOS_SIGNATURE 		0x5A4D 		MZ
		//IMAGE_OS2_SIGNATURE 		0x454E 		NE
		//IMAGE_OS2_SIGNATURE_LE 	0x454C 		LE
		//IMAGE_NT_SIGNATURE 		0x50450000 	PE\0\0
		protected byte [] _signature;
		protected PEHeader _peheader;
		protected StandardFields _standardfields;
		protected NTSpecific _ntspecific;
		protected DataDirectories _datadirectories;
		protected SectionHeader [] _sectionheaders;
		//TODO
		protected byte[] _rsrc;
		protected byte[] _reloc;

		public DOSHeader DOSHeader
		{
			get
			{
				return _dosheader;
			}
			set
			{
				_dosheader = value;
			}
		}
		public byte [] Signature
		{
			get
			{
				return _signature;
			}
			set
			{
				_signature = value;
			}
		}
		public PEHeader PEHeader
		{
			get
			{
				return _peheader;
			}
			set
			{
				_peheader = value;
			}
		}
		public StandardFields StandardFields
		{
			get
			{
				return _standardfields;
			}
			set
			{
				_standardfields = value;
			}
		}
		public NTSpecific NTSpecific
		{
			get
			{
				return _ntspecific;
			}
			set
			{
				_ntspecific = value;
			}
		}
		public DataDirectories DataDirectories
		{
			get
			{
				return _datadirectories;
			}
			set
			{
				_datadirectories = value;
			}
		}
		public SectionHeader[] SectionHeaders
		{
			get
			{
				return _sectionheaders;
			}
			set
			{
				_sectionheaders = value;
			}
		}

		//TODO
		public byte[] RSRCSection
		{
			get
			{
				return _rsrc;
			}
			set
			{
				_rsrc = value;
			}
		}
		public byte[] RELOCSection
		{
			get
			{
				return _reloc;
			}
			set
			{
				_reloc = value;
			}
		}

		public CLELExecutable()
		{
		}
	}
}
